Imports System.Data.SqlClient
Imports System.Text

Public Class FrmNieuweTekening

    Dim werknummer As String = My.Forms.FrmInlogscherm.CmbWerknummer.SelectedValue.ToString

    Dim strconnectionstring As String = My.Settings.Docregdata2ConnectionString
    Dim objconnection2 As New SqlConnection(strconnectionstring)
    Dim objdataAdapterlijst As New SqlDataAdapter
    Dim objdataset As New DataSet

    Dim strStatusVoorlopig As String = "Voorlopig"
    Dim strStatusDefinitief As String = "Definitief"
    Dim strStatusVoorUitvoering As String = "Voor Uitvoering"
    Dim strStatusVervallen As String = "Vervallen"

    Private Sub FrmNieuweTekening_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'DocRegData2DataSet.Status' table. You can move, or remove it, as needed.
        Me.StatusTableAdapter.Fill(Me.DocRegData2DataSet.Status)
        'TODO: This line of code loads data into the 'DocRegData2DataSet.Datums' table. You can move, or remove it, as needed.
        Me.DatumsTableAdapter.Fill(Me.DocRegData2DataSet.Datums)
        'TODO: This line of code loads data into the 'DocRegData2DataSet.Tekeningen' table. You can move, or remove it, as needed.
        Me.TekeningenTableAdapter.FillBy(Me.DocRegData2DataSet.Tekeningen, werknummer)
        'TODO: This line of code loads data into the 'DocRegData2DataSet.Bedrijven' table. You can move, or remove it, as needed.
        Me.BedrijvenTableAdapter.FillByBedrijven_werken(Me.DocRegData2DataSet.Bedrijven, werknummer)

        CmbNieuweStatusTekening.Items.Add(strStatusVoorlopig)
        CmbNieuweStatusTekening.Items.Add(strStatusDefinitief)
        CmbNieuweStatusTekening.Items.Add(strStatusVoorUitvoering)
        CmbNieuweStatusTekening.Items.Add(strStatusVervallen)

        CmbNieuweStatusDatum.Items.Add(strStatusVoorlopig)
        CmbNieuweStatusDatum.Items.Add(strStatusDefinitief)
        CmbNieuweStatusDatum.Items.Add(strStatusVoorUitvoering)
        CmbNieuweStatusDatum.Items.Add(strStatusVervallen)

        load_new_rows_and_update_comboboxes()

    End Sub

    Public Sub load_new_rows_and_update_comboboxes()
        BedrijvenTableAdapter.Update(DocRegData2DataSet.Bedrijven)
        BedrijvenTableAdapter.FillByBedrijven_werken(Me.DocRegData2DataSet.Bedrijven, werknummer)

        BedrijvenBindingSource.DataSource = DocRegData2DataSet
        BedrijvenBindingSource.DataMember = "Bedrijven"

        FKTekeningenBedrijvenBindingSource.DataSource = BedrijvenBindingSource
        FKTekeningenBedrijvenBindingSource.DataMember = "FK_Tekeningen_Bedrijven"

        BedrijfsnaamComboBoxBestaand.DataSource = BedrijvenBindingSource
        BedrijfsnaamComboBoxBestaand.DisplayMember = "Bedrijfsnaam"
        BedrijfsnaamComboBoxBestaand.ValueMember = "BedrijvenID"

        NaamComboBox.DataSource = FKTekeningenBedrijvenBindingSource
        NaamComboBox.DisplayMember = "Naam"
        NaamComboBox.ValueMember = "TekeningID"

    End Sub

    Public Sub Dialgbox_oude_datum()
        DlgOudeDatum.ShowDialog()

        If DlgOudeDatum.DialogResult = Windows.Forms.DialogResult.OK Then
            Me.datum_invoeren()
        Else

        End If

    End Sub

    Public Sub BtnDatumOpslaan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDatumOpslaan.Click

        'Controleren of er wel een nieuwere datum is ingevoerd
        Dim cn As New SqlConnection(strconnectionstring)
        Dim oCMD As New SqlCommand
        With oCMD
            .CommandType = CommandType.Text
            .Connection = cn
        End With
        oCMD.CommandText = "Select Datum from Datums where TekeningID = " & "'" & NaamComboBox.SelectedValue & "'"

        Dim da As New SqlDataAdapter(oCMD)
        Dim dsBestaandeDatums As New DataSet

        da.Fill(dsBestaandeDatums, "BestaandeDatums")

        Dim int As Integer = 0
        For n As Integer = 0 To dsBestaandeDatums.Tables(0).Rows.Count - 1
            If Me.DateTimePicker1.Value < dsBestaandeDatums.Tables("BestaandeDatums").Rows(n).Item(0) _
            Or Me.CmbNieuweStatusDatum.SelectedIndex < 0 Or Me.DateTimePicker1.Value > Me.DtpBinnenkomstDatum.Value Then
                int = 1
                'MsgBox("Er is een oudere datum ingevuld?!!")
                'al.Add(dsBestaandeDatums.Tables("BestaandeDatums").Rows(n).Item(0).ToString)
                'x = x + 1
            Else
                int = 0
            End If
        Next

        dsBestaandeDatums.Tables(0).Clear()

        If int = 1 Then
            Dialgbox_oude_datum()
        Else
            datum_invoeren()
        End If

    End Sub

    Public Sub datum_invoeren()
        'Create your SqlConnection (Done)  
        Dim objconnection As New SqlConnection(strconnectionstring)

        'Create your SqlCommand (done)  
        Dim objcommandDatum As New SqlCommand("NieuweDatumTekening2", objconnection)

        Dim TekenID As Integer
        TekenID = NaamComboBox.SelectedValue

        objconnection.Open()

        '**Set your command properties**  
        With objcommandDatum
            .CommandType = CommandType.StoredProcedure
            .Parameters.AddWithValue("@TekeningID", TekenID)
            .Parameters.AddWithValue("@Datum", DateTimePicker1.Value)
            .Parameters.AddWithValue("@Binnenkomst", DtpBinnenkomstDatum.Value)
        End With

        'Execute and select last inserted Primary Key ID. Execute scalar picks value in first colomn, first row in results of query.
        Dim last_row_indexNieuweDatum As Integer
        last_row_indexNieuweDatum = objcommandDatum.ExecuteScalar()

        'Create your SqlCommand (Niewe Datum van nieuwe tekening) 
        Dim objcommandStatusNieuweTekening As New SqlCommand("NieuweStatusNieuweTekening", objconnection)
        objcommandStatusNieuweTekening.CommandType = CommandType.StoredProcedure

        'Selectie Status
        Dim SelectieStatusNieuweDatum As String = CmbNieuweStatusDatum.SelectedItem

        '**Set your command properties**  
        With objcommandStatusNieuweTekening
            .Parameters.AddWithValue("@DatumID", last_row_indexNieuweDatum)
            .Parameters.AddWithValue("@Statusnaam", SelectieStatusNieuweDatum.ToString())
        End With

        'Execute command
        objcommandStatusNieuweTekening.ExecuteReader()

        'Update tabel Datums
        Me.DatumsTableAdapter.Update(DocRegData2DataSet.Datums)
        Me.DatumsTableAdapter.Fill(Me.DocRegData2DataSet.Datums)
        'Update tabel Status
        Me.StatusTableAdapter.Update(DocRegData2DataSet.Status)
        Me.StatusTableAdapter.Fill(Me.DocRegData2DataSet.Status)

        objconnection.Close()

        'Renew dataview on frmVerzendbrief because of new data
        My.Forms.FrmVerzendbrief.refill_datasetTable()

        'renew data frmtekeningenlijst
        My.Forms.FrmTekeningenlijst.vullen_tekeningenlijst()

        'renew data frmBinnenkomst
        My.Forms.frmBinnenkomst.Inladen_Tekeningen_retourgevraagd()

        My.Forms.frmBinnenkomst.DatumsTableAdapter.Update(Me.DocRegData2DataSet.Datums)
        My.Forms.frmBinnenkomst.DatumsTableAdapter.Fill(Me.DocRegData2DataSet.Datums)

        My.Forms.frmBinnenkomst.DatumComboBox.DataSource = My.Forms.frmBinnenkomst.FKDatumsTekeningenBindingSource
        My.Forms.frmBinnenkomst.DatumComboBox.DisplayMember = "Datum"
        My.Forms.frmBinnenkomst.DatumComboBox.Update()
        My.Forms.frmBinnenkomst.DatumComboBox.Refresh()

    End Sub

    Private Sub BtnOpslaanNieuw_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOpslaanNieuw.Click

        'Get your connection string (You've done this right)  
        Dim strconnectionstring As String = My.Settings.Docregdata2ConnectionString

        'Create your SqlConnection (Done)  
        Dim objconnection As New SqlConnection(strconnectionstring)

        'Create your SqlCommand (done)  
        Dim objcommandTekening As New SqlCommand("Nieuwe_Tekening_Tabel_tekeningen", objconnection)
        objcommandTekening.CommandType = CommandType.StoredProcedure

        Dim BedrID As Integer
        BedrID = BedrijfsnaamCmbNieuw.SelectedValue

        'Open Connection
        objconnection.Open()

        '**Set your command properties**  
        With objcommandTekening
            .Parameters.AddWithValue("@BedrijvenID", BedrID)
            .Parameters.AddWithValue("@Bladnummer", TxtBladnummer.Text)
            .Parameters.AddWithValue("@Naam", TxtNaam.Text)
            .Parameters.AddWithValue("@Werknummer", My.Forms.FrmInlogscherm.CmbWerknummer.SelectedValue.ToString)
            .Parameters.AddWithValue("@Tekenkastnr", TxtTekenkastnr.Text)
        End With

        'Select last inserted Primary Key ID. Execute scalar picks value in first colomn, first row in results of query.
        Dim last_row_indexTekening As Integer
        last_row_indexTekening = objcommandTekening.ExecuteScalar()

        'Create your SqlCommand (Niewe Datum van nieuwe tekening) 
        Dim objcommandDatumTekening As New SqlCommand("NieuweDatumNieuweTekening2", objconnection)
        objcommandDatumTekening.CommandType = CommandType.StoredProcedure

        '**Set your command properties**  
        With objcommandDatumTekening
            .Parameters.AddWithValue("@TekeningID", last_row_indexTekening)
            .Parameters.AddWithValue("@Datum", DateTimePickerNieuw.Value)
            .Parameters.AddWithValue("@Binnenkomst", DtpBinnenkomstNieuw.Value)
        End With

        'Select last inserted Primary Key ID. Execute scalar picks value in first colomn, first row in results of query.
        Dim last_row_indexDatum As Integer
        last_row_indexDatum = objcommandDatumTekening.ExecuteScalar()

        'Create your SqlCommand (Niewe Datum van nieuwe tekening) 
        Dim objcommandStatusNieuweTekening As New SqlCommand("NieuweStatusNieuweTekening", objconnection)
        objcommandStatusNieuweTekening.CommandType = CommandType.StoredProcedure

        'Selectie Status
        Dim SelectieStatusNieuweTekening As String = CmbNieuweStatusTekening.SelectedItem

        '**Set your command properties**  
        With objcommandStatusNieuweTekening
            .Parameters.AddWithValue("@DatumID", last_row_indexDatum)
            .Parameters.AddWithValue("@Statusnaam", SelectieStatusNieuweTekening.ToString())
        End With

        'Execute command
        objcommandStatusNieuweTekening.ExecuteReader()

        'Update tabel Tekeningen
        My.Forms.FrmTekeningen.TekeningenTableAdapter.Update(Me.DocRegData2DataSet.Tekeningen)
        My.Forms.FrmTekeningen.TekeningenTableAdapter.Fill(Me.DocRegData2DataSet.Tekeningen)
        'Update tabel Datums
        Me.DatumsTableAdapter.Update(DocRegData2DataSet.Datums)
        Me.DatumsTableAdapter.Fill(Me.DocRegData2DataSet.Datums)
        'Update tabel Status
        Me.StatusTableAdapter.Update(DocRegData2DataSet.Status)
        Me.StatusTableAdapter.Fill(Me.DocRegData2DataSet.Status)

        'Update frmBinnenkomst
        My.Forms.frmBinnenkomst.Inladen_Tekeningen_retourgevraagd()

        'Close connection
        objconnection.Close()

        'Renew dataview on frmVerzendbrief because of new data
        My.Forms.FrmVerzendbrief.objdatasetTekeningen.Clear()
        My.Forms.FrmVerzendbrief.vullen_datagridview()

        'renew data frmtekeningenlijst
        My.Forms.FrmTekeningenlijst.vullen_tekeningenlijst()

    End Sub


    Private Sub BtnVerzendbrief_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnVerzendbrief.Click

        Me.Visible = False
        My.Forms.FrmVerzendbrief.Visible = True

    End Sub


    Private Sub BtnHoofdmenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnHoofdmenu.Click
        Me.Visible = False
        My.Forms.FrmHoofdmenu.Visible = True

    End Sub

End Class